From 971d54fdf5ac24ebfe0b5f2dfafdc7e14fb8478d Mon Sep 17 00:00:00 2001 From: robertlipe Date: Wed, 11 Jun 2014 01:59:59 +0000 Subject: [PATCH] Zingo Anderson adds support for the Energympro sport watches. --- gpsbabel/Makefile.in | 3 +- gpsbabel/energympro.cc | 317 + gpsbabel/gui/mainwindow.cc | 2 + gpsbabel/gui/processwait.cc | 31 +- gpsbabel/reference/track/energympro.cpo | Bin 0 -> 53764 bytes gpsbabel/reference/track/energympro.gpx | 10982 ++++++++++++++++ gpsbabel/test-all | 1 + gpsbabel/testo.d/energympro.test | 6 + gpsbabel/vecs.cc | 8 + .../filters/options/transform-rptdigits.xml | 13 - gpsbabel/xmldoc/formats/energympro.xml | 16 + 11 files changed, 11360 insertions(+), 19 deletions(-) create mode 100644 gpsbabel/energympro.cc create mode 100644 gpsbabel/reference/track/energympro.cpo create mode 100644 gpsbabel/reference/track/energympro.gpx create mode 100644 gpsbabel/testo.d/energympro.test delete mode 100644 gpsbabel/xmldoc/filters/options/transform-rptdigits.xml create mode 100644 gpsbabel/xmldoc/formats/energympro.xml diff --git a/gpsbabel/Makefile.in b/gpsbabel/Makefile.in index 8fdd57fe1..4f23342ca 100644 --- a/gpsbabel/Makefile.in +++ b/gpsbabel/Makefile.in @@ -80,7 +80,7 @@ ALL_FMTS=$(MINIMAL_FMTS) gtm.o gpsutil.o \ pocketfms_bc.o pocketfms_fp.o pocketfms_wp.o naviguide.o enigma.o \ vpl.o teletype.o jogmap.o bushnell.o bushnell_trl.o wintec_tes.o \ subrip.o garmin_xt.o garmin_fit.o lowranceusr4.o \ - mtk_locus.o googledir.o mapbar_track.o mapfactor.o + mtk_locus.o googledir.o mapbar_track.o mapfactor.o energympro.o FMTS=@FMTS@ @@ -492,6 +492,7 @@ duplicate.o: duplicate.cc defs.h config.h queue.h zlib/zlib.h \ src/core/datetime.h filterdefs.h easygps.o: easygps.cc defs.h config.h queue.h zlib/zlib.h zlib/zconf.h \ gbfile.h cet.h cet_util.h inifile.h session.h src/core/datetime.h +energympro.o: energympro.cc defs.h config.h gbfile.h enigma.o: enigma.cc defs.h config.h queue.h zlib/zlib.h zlib/zconf.h \ gbfile.h cet.h cet_util.h inifile.h session.h src/core/datetime.h exif.o: exif.cc defs.h config.h queue.h zlib/zlib.h zlib/zconf.h gbfile.h \ diff --git a/gpsbabel/energympro.cc b/gpsbabel/energympro.cc new file mode 100644 index 000000000..d4fe89477 --- /dev/null +++ b/gpsbabel/energympro.cc @@ -0,0 +1,317 @@ +/* + Handle energympro (GPS training watch) .cpo files + + Copyright (c) 2014 Zingo Andersen zingo@vectrace.com + Copyright (C) 2014 Robert Lipe, robertlipe+source@gpsbabel.org + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA + + */ + +#include "defs.h" +#include +#include + +#define MYNAME "energympro" + +static gbfile* file_in; + +typedef struct tagDATE +{ + uint8_t Year; + uint8_t Month; + uint8_t Day; +} tw_date; + +typedef struct tagTIME +{ + uint8_t Hour; + uint8_t Minute; + uint8_t Second; +} tw_time; + +typedef struct Workout + { + tw_date dateStart; // start date + tw_time timeStart; // start time + uint16_t TotalRecPt; // Total record Point + uint32_t TotalTime; // Total Time + uint32_t TotalDist; // Total Distance + uint16_t LapNumber; // Lap Number + uint16_t Calory; // Calory + uint32_t MaxSpeed; // Max Speed + uint32_t AvgSpeed; // average Speed + uint8_t MaxHeart; // Max Heartrate + uint8_t AvgHeart; // average Heart + uint16_t Ascent; // Ascent + uint16_t Descent; // Descent + int16_t MinAlti; // Min Altitude + int16_t MaxAlti; // Max Altitude + uint8_t AvgCad; // average Cadence + uint8_t MaxCad; // Best Cadence + uint16_t AvgPower; // average Power + uint16_t MaxPower; // Max Power + char VersionProduct[15]; + uint8_t reserved1; + uint8_t VersionVerNum; + uint8_t reserved2[17]; + } tw_workout; + + +typedef struct Point + { + uint32_t Latitude; + uint32_t Longitude; + int16_t Altitude; + uint16_t reserved1; + uint32_t Speed; + uint16_t IntervalDist; // Interval Distance + uint16_t reserved2; + uint32_t lntervalTime; // Interval time + uint8_t Status; //Status (0 = ok, 1 = miss, 2 = no good, 3 = bad) + uint8_t HR_Heartrate; + uint8_t HR_Status; + uint8_t reserved3; + uint32_t Speed_Speed; + uint8_t Speed_Status; + uint8_t reserved4; + uint8_t reserved5; + uint8_t reserved6; + uint8_t Cadence_Cadence; + uint8_t Cadence_Status; + uint16_t Power_Cadence; + uint16_t Power_Power; + uint8_t Power_Status; + uint8_t reserved7; + uint8_t Temp; + uint8_t reserved8; + uint8_t reserved9; + uint8_t reserved10; + } tw_point; + +typedef struct Lap + { + uint32_t splitTime; // split time + uint32_t TotalTime; // Total Time + uint16_t Number; // Number + uint16_t reserved1; + uint32_t lDistance; // Distance + uint16_t Calorie; // Calorie + uint16_t reserved2; + uint32_t MaxSpeed; // Max Speed + uint32_t AvgSpeed; // average Speed + uint8_t MaxHeartrate; // Max Heartrate + uint8_t AvgHeartrate; // average Heartrate + int16_t MinAlti; // Min Altitude + int16_t MaxAlti; // Max Altitude + uint8_t AvgCad; // average Cadence + uint8_t MaxCad; // Max Cadence + uint16_t AvgPower; // average Power + uint16_t MaxPower; // Max Power + uint16_t StartRecPt; // start record point + uint16_t FinishRecPt; // Finish record point + } tw_lap; + + +//******************************************************************************* +// local helper functions +//******************************************************************************* +static void +read_point(route_head* gpsbabel_route,gpsbabel::DateTime& gpsDateTime) +{ + tw_point point; + gbfread(&point,sizeof(tw_point),1,file_in); + if (global_opts.debug_level > 1) { + printf ("Point: lat:%8d long:%8d alt:%8d ",point.Latitude,point.Longitude,point.Altitude); + printf ("speed:%6d dist:%5d time:%5d Status:%1d", point.Speed,point.IntervalDist,point.lntervalTime,point.Status); + printf ("HR:(%3d,%1d)" , point.HR_Heartrate,point.HR_Status); + printf ("Speed:(%8d,%1d)" , point.Speed_Speed,point.Speed_Status); + printf ("Cad:(%3d,%1d)" , point.Cadence_Cadence, point.Cadence_Status); + printf ("Power (Cad:%6d Pow:%6d,%2d)Temp:%3d\n" , point.Power_Cadence, point.Power_Power, point.Power_Status, point.Temp); + + qDebug() << "DateTime1:" << gpsDateTime.toString(); + qDebug() << "point.lntervalTime:" << point.lntervalTime; + } + + //Time from last point in sec's * 10 (e.g. point.lntervalTime is sec multiplied witn 10) + // convert to milisecs + gpsbabel::DateTime gpsbabeltime = gpsDateTime.addMSecs(point.lntervalTime*100); + gpsDateTime.setDate(gpsbabeltime.date()); + gpsDateTime.setTime(gpsbabeltime.time()); + + //remove parts of sec (on purpose) on reported time, we keep track of parts of sec in + // global structure so we don't drift + qint64 mSecsSinceEpoc = gpsbabeltime.toMSecsSinceEpoch(); + gpsbabeltime.setMSecsSinceEpoch(mSecsSinceEpoc-mSecsSinceEpoc%1000); + + Waypoint* waypt; + waypt = new Waypoint; + waypt->latitude = (point.Latitude / (double)1000000); + waypt->longitude = (point.Longitude / (double)1000000); + waypt->altitude = point.Altitude; + + if (global_opts.debug_level > 1) { + qDebug() << "DateTime2:" << gpsDateTime.toString(); + } + + waypt->SetCreationTime(gpsbabeltime); + + if (point.Speed_Status == 0) { + WAYPT_SET(waypt, speed, point.Speed_Speed / 100.0f); + } + if (point.HR_Status == 0) { + waypt->heartrate = point.HR_Heartrate; + } + if (point.Cadence_Status == 0) { + waypt->cadence = point.Cadence_Cadence; + } + if (point.Power_Status == 0) { + waypt->power = point.Power_Power; + } + WAYPT_SET(waypt, temperature, point.Temp); + track_add_wpt(gpsbabel_route, waypt); +} + + +static void +read_lap(void) +{ + tw_lap lap; + gbfread(&lap,sizeof(tw_lap),1,file_in); + if (global_opts.debug_level > 1) { + printf ("LAP: splitTime:%6ds TotalTime:%6ds LapNumber:%5d ",lap.splitTime/10,lap.TotalTime/10,lap.Number); + printf ("dist:%08dm Cal:%5d Speed:(%6d,%6d) ", lap.lDistance,lap.Calorie,lap.MaxSpeed,lap.AvgSpeed); + printf ("HR:(%3d,%3d)" , lap.MaxHeartrate,lap.AvgHeartrate); + printf ("Alt:(%6d,%6d) ", lap.MinAlti,lap.MaxAlti); + printf ("Cad:(%3d,%3d) ", lap.AvgCad,lap.MaxCad); + printf ("Power:(%3d,%3d)w ", lap.AvgPower,lap.MaxPower); + printf ("Pt:(%6d,%6d)\n", lap.StartRecPt,lap.FinishRecPt); + } +} + +//******************************************************************************* +// global callbacks called by gpsbabel main process +//******************************************************************************* + +static void +rd_init(const char* fname) +{ + if (global_opts.debug_level > 1) { + printf (MYNAME " rd_deinit()\n"); + } + gbfile* fileorg_in = gbfopen(fname, "rb", MYNAME); + + /* copy file to memory stream (needed for seek-ops and piped commands) */ + file_in = gbfopen(NULL, "wb", MYNAME); + gbsize_t size; + size = gbfcopyfrom(file_in, fileorg_in, 0x7FFFFFFF); + if(global_opts.debug_level > 1) { + printf (MYNAME " filesize=%d\n",size); + } + gbfclose(fileorg_in); +} + +static void +rd_deinit(void) +{ + if (global_opts.debug_level > 1) { + printf (MYNAME " rd_deinit()\n"); + } + gbfclose(file_in); +} + +static void +track_read(void) +{ + if(global_opts.debug_level > 1) { + printf (MYNAME " waypoint_read()\n"); + } + + gbfseek(file_in, 0L, SEEK_END); + gbfseek(file_in, (int32_t) -(sizeof(tw_workout)), SEEK_CUR); + tw_workout workout; + workout.dateStart.Year = gbfgetc(file_in); + workout.dateStart.Month = gbfgetc(file_in); + workout.dateStart.Day = gbfgetc(file_in); + workout.timeStart.Hour = gbfgetc(file_in); + workout.timeStart.Minute = gbfgetc(file_in); + workout.timeStart.Second = gbfgetc(file_in); + workout.TotalRecPt = gbfgetint16(file_in); + workout.TotalTime = gbfgetint32(file_in); + workout.TotalDist = gbfgetint32(file_in); + workout.LapNumber = gbfgetint16(file_in); + workout.Calory = gbfgetint16(file_in); + workout.MaxSpeed = gbfgetint32(file_in); + workout.AvgSpeed = gbfgetint32(file_in); + workout.MaxHeart = gbfgetc(file_in); + workout.AvgHeart = gbfgetc(file_in); + + if (global_opts.debug_level > 1) { + printf ("%04d-%02d-%02d ", workout.dateStart.Year+2000,workout.dateStart.Month, workout.dateStart.Day); + printf ("%02d:%02d:%02d ", workout.timeStart.Hour,workout.timeStart.Minute, workout.timeStart.Second); + printf ("Total(RecPt:%6d Time:%6ds Dist:%9dm) LapNumber:%5d \n",workout.TotalRecPt,workout.TotalTime/10, workout.TotalDist, workout.LapNumber); + } + + /* + * GPS year: 2000+; struct tm year: 1900+ + */ + QDate gpsDate = QDate(workout.dateStart.Year+2000,workout.dateStart.Month,workout.dateStart.Day); + QTime gpsTime = QTime(workout.timeStart.Hour,workout.timeStart.Minute,workout.timeStart.Second); + gpsbabel::DateTime gpsDateTime = gpsbabel::DateTime(gpsDate,gpsTime); + gpsDateTime.setTimeSpec(Qt::UTC); + route_head* gpsbabel_route = route_head_alloc(); + + track_add_head(gpsbabel_route); + gbfseek(file_in, 0L, SEEK_SET); + + for(int point=0;point 1) { + printf (MYNAME " data_read()\n"); + } + + track_read(); +} + + +ff_vecs_t energympro_vecs = { + ff_type_file, + { + ff_cap_none, // waypoints + ff_cap_read, // tracks + ff_cap_none // routes + }, + rd_init, // rd_init + NULL, // wr_init + rd_deinit, // rd_deinit + NULL, // wr_deinit + data_read, // read + NULL, // write + NULL, // exit + NULL, //args + CET_CHARSET_ASCII, 0 //encode,fixed_encode + //NULL //name dynamic/internal? +}; diff --git a/gpsbabel/gui/mainwindow.cc b/gpsbabel/gui/mainwindow.cc index 3ca27c5d1..d7f670e78 100644 --- a/gpsbabel/gui/mainwindow.cc +++ b/gpsbabel/gui/mainwindow.cc @@ -955,6 +955,8 @@ void MainWindow::applyActionX() args << "-r"; if (babelData_.xlateTracks_ && ifmt.isReadTracks() && ofmt.isWriteTracks()) args << "-t"; + + args << "-vs"; // Input type, with options bool iisFile = (babelData_.inputType_ == BabelData::fileType_); diff --git a/gpsbabel/gui/processwait.cc b/gpsbabel/gui/processwait.cc index 6160b73a8..cd756bfa8 100644 --- a/gpsbabel/gui/processwait.cc +++ b/gpsbabel/gui/processwait.cc @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -98,6 +99,7 @@ ProcessWaitDialog::ProcessWaitDialog(QWidget *parent, QProcess *process): bufferedOut_ = ""; // +#if 0 for (int i=0; i<=100; i+=2) progressVals_.push_back(i); for (int i=98; i>0; i-=2) @@ -112,7 +114,7 @@ ProcessWaitDialog::ProcessWaitDialog(QWidget *parent, QProcess *process): ecode_ = 0; timer_->start(); errorString_ = ""; - +#endif } //------------------------------------------------------------------------ @@ -143,6 +145,7 @@ void ProcessWaitDialog::stopClickedX() process_->terminate(); }; //------------------------------------------------------------------------ + void ProcessWaitDialog::timeoutX() { progressIndex_++; @@ -172,7 +175,9 @@ void ProcessWaitDialog::finishedX(int exitCode, QProcess::ExitStatus es) ecode_ = exitCode; if (es == QProcess::CrashExit) errorString_ = QString(tr("Process crashed whle running")); - timer_->stop(); + if (timer_ != NULL) { +// timer_->stop(); + } accept(); }; @@ -201,14 +206,30 @@ void ProcessWaitDialog::appendToText(const char *ptr) void ProcessWaitDialog::readyReadStandardErrorX() { QByteArray d = process_->readAllStandardError(); - appendToText(d.data()); +qDebug() << d; +// appendToText(d.data()); }; //------------------------------------------------------------------------ void ProcessWaitDialog::readyReadStandardOutputX() - { +{ QByteArray d = process_->readAllStandardOutput(); - appendToText(d.data()); + QString status(d); + QStringList completion = QString(d).split("/"); + + // We'll sometimes get > 1. This will also consume anything to stdout + // that isn't a vs output. We'll see if that's OK. + if (completion.size() == 0) { + appendToText(d.data()); + return; + } + if (completion.size() >= 3 && + completion[2].toInt() > progressBar_->maximum()) { + progressBar_->setRange(0, completion[2].toInt()); + } + if (completion.size() >= 2) { + progressBar_->setValue(completion[1].toInt()); + } }; void ProcessWaitDialog::closeEvent(QCloseEvent *event) diff --git a/gpsbabel/reference/track/energympro.cpo b/gpsbabel/reference/track/energympro.cpo new file mode 100644 index 0000000000000000000000000000000000000000..aaef1e86c8721a2730e8a7fdc5541bf29af6a46f GIT binary patch literal 53764 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 M%>K71?%vD)1BaFq>;M1& literal 0 HcmV?d00001 diff --git a/gpsbabel/reference/track/energympro.gpx b/gpsbabel/reference/track/energympro.gpx new file mode 100644 index 000000000..d00c60110 --- /dev/null +++ b/gpsbabel/reference/track/energympro.gpx @@ -0,0 +1,10982 @@ + + + + + + + + + + 78.000000 + + + + 129.000000 + 91 + + + + + 78.000000 + + + + 129.000000 + 90 + + + + + 78.000000 + + + + 129.000000 + 90 + + + + + 78.000000 + + + + 129.000000 + 90 + + + + + 77.000000 + + + + 129.000000 + 113 + + + + + 77.000000 + + + + 129.000000 + 113 + + + + + 76.000000 + + + + 129.000000 + 113 + + + + + 74.000000 + + + + 129.000000 + 113 + + + + + 73.000000 + + + + 129.000000 + 113 + + + + + 71.000000 + + + + 129.000000 + 113 + + + + + 70.000000 + + + + 129.000000 + + + + + 68.000000 + + + + 129.000000 + + + + + 66.000000 + + + + 129.000000 + + + + + 65.000000 + + + + 129.000000 + + + + + 64.000000 + + + + 129.000000 + + + + + 63.000000 + + + + 129.000000 + + + + + 62.000000 + + + + 129.000000 + + + + + 62.000000 + + + + 129.000000 + + + + + 61.000000 + + + + 129.000000 + + + + + 60.000000 + + + + 129.000000 + + + + + 59.000000 + + + + 129.000000 + + + + + 58.000000 + + + + 129.000000 + + + + + 58.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 56.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 56.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 56.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 48.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 48.000000 + + + + 129.000000 + + + + + 48.000000 + + + + 129.000000 + + + + + 47.000000 + + + + 129.000000 + + + + + 47.000000 + + + + 129.000000 + + + + + 47.000000 + + + + 129.000000 + + + + + 48.000000 + + + + 129.000000 + + + + + 48.000000 + + + + 129.000000 + + + + + 48.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 50.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 52.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 56.000000 + + + + 129.000000 + + + + + 56.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + + + + + 55.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + + + + + 49.000000 + + + + 129.000000 + + + + + 47.000000 + + + + 129.000000 + + + + + 45.000000 + + + + 129.000000 + 113 + + + + + 43.000000 + + + + 129.000000 + 113 + + + + + 41.000000 + + + + 129.000000 + 113 + + + + + 39.000000 + + + + 129.000000 + 113 + + + + + 38.000000 + + + + 129.000000 + 113 + + + + + 37.000000 + + + + 129.000000 + + + + + 36.000000 + + + + 129.000000 + + + + + 36.000000 + + + + 129.000000 + + + + + 36.000000 + + + + 129.000000 + + + + + 37.000000 + + + + 129.000000 + + + + + 38.000000 + + + + 129.000000 + 113 + + + + + 39.000000 + + + + 129.000000 + 113 + + + + + 40.000000 + + + + 129.000000 + 113 + + + + + 41.000000 + + + + 129.000000 + 113 + + + + + 42.000000 + + + + 129.000000 + 113 + + + + + 43.000000 + + + + 129.000000 + 113 + + + + + 43.000000 + + + + 129.000000 + + + + + 44.000000 + + + + 129.000000 + 113 + + + + + 43.000000 + + + + 129.000000 + 113 + + + + + 43.000000 + + + + 129.000000 + 113 + + + + + 44.000000 + + + + 129.000000 + 113 + + + + + 44.000000 + + + + 129.000000 + 113 + + + + + 44.000000 + + + + 129.000000 + 113 + + + + + 44.000000 + + + + 129.000000 + + + + + 44.000000 + + + + 129.000000 + + + + + 44.000000 + + + + 129.000000 + + + + + 45.000000 + + + + 129.000000 + 154 + + + + + 46.000000 + + + + 129.000000 + 154 + + + + + 47.000000 + + + + 129.000000 + 154 + + + + + 47.000000 + + + + 129.000000 + 154 + + + + + 48.000000 + + + + 129.000000 + 154 + + + + + 48.000000 + + + + 129.000000 + 139 + + + + + 48.000000 + + + + 129.000000 + 139 + + + + + 49.000000 + + + + 129.000000 + 139 + + + + + 50.000000 + + + + 129.000000 + 139 + + + + + 51.000000 + + + + 129.000000 + 139 + + + + + 53.000000 + + + + 129.000000 + 139 + + + + + 56.000000 + + + + 129.000000 + 139 + + + + + 59.000000 + + + + 129.000000 + 149 + + + + + 62.000000 + + + + 129.000000 + 149 + + + + + 65.000000 + + + + 129.000000 + 149 + + + + + 67.000000 + + + + 129.000000 + + + + + 68.000000 + + + + 129.000000 + 149 + + + + + 69.000000 + + + + 129.000000 + 149 + + + + + 68.000000 + + + + 129.000000 + 149 + + + + + 67.000000 + + + + 129.000000 + 153 + + + + + 66.000000 + + + + 129.000000 + 153 + + + + + 64.000000 + + + + 129.000000 + 153 + + + + + 63.000000 + + + + 129.000000 + 153 + + + + + 62.000000 + + + + 129.000000 + 155 + + + + + 61.000000 + + + + 129.000000 + 155 + + + + + 60.000000 + + + + 129.000000 + 155 + + + + + 60.000000 + + + + 129.000000 + 149 + + + + + 60.000000 + + + + 129.000000 + 149 + + + + + 60.000000 + + + + 129.000000 + 149 + + + + + 61.000000 + + + + 129.000000 + 149 + + + + + 62.000000 + + + + 129.000000 + 149 + + + + + 63.000000 + + + + 129.000000 + 140 + + + + + 64.000000 + + + + 129.000000 + 140 + + + + + 65.000000 + + + + 129.000000 + 140 + + + + + 66.000000 + + + + 129.000000 + 140 + + + + + 66.000000 + + + + 129.000000 + 143 + + + + + 66.000000 + + + + 129.000000 + 143 + + + + + 65.000000 + + + + 129.000000 + 140 + + + + + 65.000000 + + + + 129.000000 + 140 + + + + + 64.000000 + + + + 129.000000 + 140 + + + + + 64.000000 + + + + 129.000000 + 137 + + + + + 63.000000 + + + + 129.000000 + 137 + + + + + 62.000000 + + + + 129.000000 + 137 + + + + + 61.000000 + + + + 129.000000 + 138 + + + + + 60.000000 + + + + 129.000000 + 138 + + + + + 59.000000 + + + + 129.000000 + 140 + + + + + 59.000000 + + + + 129.000000 + 140 + + + + + 59.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 136 + + + + + 61.000000 + + + + 129.000000 + 136 + + + + + 62.000000 + + + + 129.000000 + 136 + + + + + 62.000000 + + + + 129.000000 + 136 + + + + + 62.000000 + + + + 129.000000 + 136 + + + + + 62.000000 + + + + 129.000000 + 136 + + + + + 62.000000 + + + + 129.000000 + 141 + + + + + 62.000000 + + + + 129.000000 + 141 + + + + + 61.000000 + + + + 129.000000 + 141 + + + + + 61.000000 + + + + 129.000000 + 141 + + + + + 60.000000 + + + + 129.000000 + 141 + + + + + 59.000000 + + + + 129.000000 + 141 + + + + + 58.000000 + + + + 129.000000 + 141 + + + + + 57.000000 + + + + 129.000000 + 140 + + + + + 56.000000 + + + + 129.000000 + 140 + + + + + 56.000000 + + + + 129.000000 + 140 + + + + + 55.000000 + + + + 129.000000 + 140 + + + + + 55.000000 + + + + 129.000000 + 143 + + + + + 54.000000 + + + + 129.000000 + 143 + + + + + 54.000000 + + + + 129.000000 + 143 + + + + + 54.000000 + + + + 129.000000 + 148 + + + + + 54.000000 + + + + 129.000000 + 148 + + + + + 54.000000 + + + + 129.000000 + 148 + + + + + 54.000000 + + + + 129.000000 + 148 + + + + + 54.000000 + + + + 129.000000 + 148 + + + + + 54.000000 + + + + 129.000000 + 148 + + + + + 54.000000 + + + + 129.000000 + 148 + + + + + 54.000000 + + + + 129.000000 + 142 + + + + + 54.000000 + + + + 129.000000 + 142 + + + + + 55.000000 + + + + 129.000000 + 142 + + + + + 56.000000 + + + + 129.000000 + 136 + + + + + 56.000000 + + + + 129.000000 + 136 + + + + + 58.000000 + + + + 129.000000 + 135 + + + + + 59.000000 + + + + 129.000000 + 135 + + + + + 60.000000 + + + + 129.000000 + 135 + + + + + 61.000000 + + + + 129.000000 + 139 + + + + + 61.000000 + + + + 129.000000 + 139 + + + + + 61.000000 + + + + 129.000000 + 142 + + + + + 61.000000 + + + + 129.000000 + 142 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 59.000000 + + + + 129.000000 + 134 + + + + + 57.000000 + + + + 129.000000 + 130 + + + + + 56.000000 + + + + 129.000000 + 130 + + + + + 55.000000 + + + + 129.000000 + 130 + + + + + 53.000000 + + + + 129.000000 + 131 + + + + + 52.000000 + + + + 129.000000 + 131 + + + + + 52.000000 + + + + 129.000000 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 131 + + + + + 51.000000 + + + + 129.000000 + 131 + + + + + 51.000000 + + + + 129.000000 + 131 + + + + + 50.000000 + + + + 129.000000 + 131 + + + + + 50.000000 + + + + 129.000000 + 134 + + + + + 50.000000 + + + + 129.000000 + 134 + + + + + 50.000000 + + + + 129.000000 + 130 + + + + + 50.000000 + + + + 129.000000 + 130 + + + + + 50.000000 + + + + 129.000000 + 130 + + + + + 50.000000 + + + + 129.000000 + 132 + + + + + 50.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 52.000000 + + + + 129.000000 + + + + + 53.000000 + + + + 129.000000 + 132 + + + + + 55.000000 + + + + 129.000000 + 132 + + + + + 56.000000 + + + + 129.000000 + 132 + + + + + 58.000000 + + + + 129.000000 + 132 + + + + + 60.000000 + + + + 129.000000 + 130 + + + + + 62.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 65.000000 + + + + 129.000000 + 130 + + + + + 66.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 131 + + + + + 68.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 139 + + + + + 66.000000 + + + + 129.000000 + 139 + + + + + 66.000000 + + + + 129.000000 + 135 + + + + + 66.000000 + + + + 129.000000 + 135 + + + + + 65.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 63.000000 + + + + 129.000000 + 130 + + + + + 63.000000 + + + + 129.000000 + 124 + + + + + 64.000000 + + + + 129.000000 + 124 + + + + + 64.000000 + + + + 129.000000 + 123 + + + + + 64.000000 + + + + 129.000000 + 123 + + + + + 65.000000 + + + + 129.000000 + 123 + + + + + 65.000000 + + + + 129.000000 + 121 + + + + + 65.000000 + + + + 129.000000 + 121 + + + + + 65.000000 + + + + 129.000000 + 127 + + + + + 65.000000 + + + + 129.000000 + 127 + + + + + 64.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 61.000000 + + + + 129.000000 + 132 + + + + + 59.000000 + + + + 129.000000 + 132 + + + + + 58.000000 + + + + 129.000000 + 133 + + + + + 56.000000 + + + + 129.000000 + 133 + + + + + 54.000000 + + + + 129.000000 + 133 + + + + + 52.000000 + + + + 129.000000 + 133 + + + + + 50.000000 + + + + 129.000000 + 133 + + + + + 48.000000 + + + + 129.000000 + 133 + + + + + 46.000000 + + + + 129.000000 + 133 + + + + + 45.000000 + + + + 129.000000 + 133 + + + + + 44.000000 + + + + 129.000000 + 134 + + + + + 45.000000 + + + + 129.000000 + 134 + + + + + 46.000000 + + + + 129.000000 + 135 + + + + + 47.000000 + + + + 129.000000 + 135 + + + + + 49.000000 + + + + 129.000000 + 133 + + + + + 51.000000 + + + + 129.000000 + 133 + + + + + 53.000000 + + + + 129.000000 + 133 + + + + + 55.000000 + + + + 129.000000 + 133 + + + + + 57.000000 + + + + 129.000000 + 134 + + + + + 58.000000 + + + + 129.000000 + 134 + + + + + 59.000000 + + + + 129.000000 + 134 + + + + + 59.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 135 + + + + + 60.000000 + + + + 129.000000 + 135 + + + + + 60.000000 + + + + 129.000000 + 135 + + + + + 59.000000 + + + + 129.000000 + 135 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 59.000000 + + + + 129.000000 + 133 + + + + + 61.000000 + + + + 129.000000 + 133 + + + + + 62.000000 + + + + 129.000000 + 132 + + + + + 64.000000 + + + + 129.000000 + 132 + + + + + 65.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 69.000000 + + + + 129.000000 + 131 + + + + + 70.000000 + + + + 129.000000 + 131 + + + + + 71.000000 + + + + 129.000000 + 131 + + + + + 71.000000 + + + + 129.000000 + 131 + + + + + 71.000000 + + + + 129.000000 + 131 + + + + + 70.000000 + + + + 129.000000 + 131 + + + + + 70.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 66.000000 + + + + 129.000000 + 130 + + + + + 65.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 131 + + + + + 63.000000 + + + + 129.000000 + 131 + + + + + 61.000000 + + + + 129.000000 + 132 + + + + + 59.000000 + + + + 129.000000 + 132 + + + + + 58.000000 + + + + 129.000000 + 132 + + + + + 57.000000 + + + + 129.000000 + 132 + + + + + 57.000000 + + + + 129.000000 + 132 + + + + + 57.000000 + + + + 129.000000 + 132 + + + + + 57.000000 + + + + 129.000000 + 131 + + + + + 57.000000 + + + + 129.000000 + 131 + + + + + 57.000000 + + + + 129.000000 + 131 + + + + + 57.000000 + + + + 129.000000 + 131 + + + + + 57.000000 + + + + 129.000000 + 133 + + + + + 57.000000 + + + + 129.000000 + 133 + + + + + 56.000000 + + + + 129.000000 + 133 + + + + + 56.000000 + + + + 129.000000 + 133 + + + + + 55.000000 + + + + 129.000000 + 134 + + + + + 55.000000 + + + + 129.000000 + 134 + + + + + 55.000000 + + + + 129.000000 + 133 + + + + + 56.000000 + + + + 129.000000 + 133 + + + + + 56.000000 + + + + 129.000000 + 133 + + + + + 57.000000 + + + + 129.000000 + 133 + + + + + 57.000000 + + + + 129.000000 + 132 + + + + + 58.000000 + + + + 129.000000 + 132 + + + + + 58.000000 + + + + 129.000000 + 134 + + + + + 59.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 62.000000 + + + + 129.000000 + 134 + + + + + 64.000000 + + + + 129.000000 + 133 + + + + + 66.000000 + + + + 129.000000 + 133 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 70.000000 + + + + 129.000000 + 132 + + + + + 71.000000 + + + + 129.000000 + 132 + + + + + 73.000000 + + + + 129.000000 + 132 + + + + + 74.000000 + + + + 129.000000 + 136 + + + + + 75.000000 + + + + 129.000000 + 136 + + + + + 76.000000 + + + + 129.000000 + 136 + + + + + 76.000000 + + + + 129.000000 + 137 + + + + + 77.000000 + + + + 129.000000 + 137 + + + + + 77.000000 + + + + 129.000000 + 138 + + + + + 78.000000 + + + + 129.000000 + 138 + + + + + 78.000000 + + + + 129.000000 + 138 + + + + + 77.000000 + + + + 129.000000 + 137 + + + + + 77.000000 + + + + 129.000000 + 137 + + + + + 76.000000 + + + + 129.000000 + 140 + + + + + 76.000000 + + + + 129.000000 + 140 + + + + + 75.000000 + + + + 129.000000 + 140 + + + + + 74.000000 + + + + 129.000000 + 140 + + + + + 73.000000 + + + + 129.000000 + 140 + + + + + 72.000000 + + + + 129.000000 + 136 + + + + + 71.000000 + + + + 129.000000 + 136 + + + + + 71.000000 + + + + 129.000000 + 136 + + + + + 70.000000 + + + + 129.000000 + 133 + + + + + 70.000000 + + + + 129.000000 + 133 + + + + + 70.000000 + + + + 129.000000 + 137 + + + + + 70.000000 + + + + 129.000000 + 137 + + + + + 70.000000 + + + + 129.000000 + 136 + + + + + 70.000000 + + + + 129.000000 + 136 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 72.000000 + + + + 129.000000 + 132 + + + + + 72.000000 + + + + 129.000000 + 132 + + + + + 73.000000 + + + + 129.000000 + 131 + + + + + 72.000000 + + + + 129.000000 + 131 + + + + + 72.000000 + + + + 129.000000 + 130 + + + + + 72.000000 + + + + 129.000000 + 130 + + + + + 72.000000 + + + + 129.000000 + 130 + + + + + 72.000000 + + + + 129.000000 + 130 + + + + + 72.000000 + + + + 129.000000 + 131 + + + + + 72.000000 + + + + 129.000000 + 131 + + + + + 73.000000 + + + + 129.000000 + 131 + + + + + 74.000000 + + + + 129.000000 + 135 + + + + + 74.000000 + + + + 129.000000 + 130 + + + + + 74.000000 + + + + 129.000000 + 130 + + + + + 74.000000 + + + + 129.000000 + 130 + + + + + 73.000000 + + + + 129.000000 + 130 + + + + + 72.000000 + + + + 129.000000 + 130 + + + + + 71.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 130 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 66.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 61.000000 + + + + 129.000000 + 131 + + + + + 60.000000 + + + + 129.000000 + 128 + + + + + 60.000000 + + + + 129.000000 + 128 + + + + + 60.000000 + + + + 129.000000 + 133 + + + + + 61.000000 + + + + 129.000000 + 133 + + + + + 61.000000 + + + + 129.000000 + 133 + + + + + 62.000000 + + + + 129.000000 + 137 + + + + + 64.000000 + + + + 129.000000 + 137 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 65.000000 + + + + 129.000000 + 130 + + + + + 65.000000 + + + + 129.000000 + 129 + + + + + 65.000000 + + + + 129.000000 + 129 + + + + + 65.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 132 + + + + + 64.000000 + + + + 129.000000 + 132 + + + + + 62.000000 + + + + 129.000000 + 129 + + + + + 61.000000 + + + + 129.000000 + 129 + + + + + 60.000000 + + + + 129.000000 + 130 + + + + + 59.000000 + + + + 129.000000 + 130 + + + + + 58.000000 + + + + 129.000000 + 127 + + + + + 57.000000 + + + + 129.000000 + 127 + + + + + 56.000000 + + + + 129.000000 + 127 + + + + + 56.000000 + + + + 129.000000 + 126 + + + + + 55.000000 + + + + 129.000000 + 126 + + + + + 55.000000 + + + + 129.000000 + 132 + + + + + 54.000000 + + + + 129.000000 + 132 + + + + + 53.000000 + + + + 129.000000 + 135 + + + + + 52.000000 + + + + 129.000000 + 135 + + + + + 52.000000 + + + + 129.000000 + 134 + + + + + 51.000000 + + + + 129.000000 + 134 + + + + + 50.000000 + + + + 129.000000 + 134 + + + + + 50.000000 + + + + 129.000000 + 134 + + + + + 49.000000 + + + + 129.000000 + 133 + + + + + 49.000000 + + + + 129.000000 + 133 + + + + + 48.000000 + + + + 129.000000 + 133 + + + + + 48.000000 + + + + 129.000000 + 132 + + + + + 47.000000 + + + + 129.000000 + 132 + + + + + 47.000000 + + + + 129.000000 + 139 + + + + + 47.000000 + + + + 129.000000 + 139 + + + + + 47.000000 + + + + 129.000000 + 134 + + + + + 49.000000 + + + + 129.000000 + 134 + + + + + 51.000000 + + + + 129.000000 + 134 + + + + + 53.000000 + + + + 129.000000 + 130 + + + + + 56.000000 + + + + 129.000000 + 130 + + + + + 59.000000 + + + + 129.000000 + 132 + + + + + 62.000000 + + + + 129.000000 + 132 + + + + + 64.000000 + + + + 129.000000 + 132 + + + + + 66.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 133 + + + + + 68.000000 + + + + 129.000000 + 133 + + + + + 68.000000 + + + + 129.000000 + 133 + + + + + 68.000000 + + + + 129.000000 + 133 + + + + + 67.000000 + + + + 129.000000 + 133 + + + + + 67.000000 + + + + 129.000000 + 133 + + + + + 66.000000 + + + + 129.000000 + 133 + + + + + 65.000000 + + + + 129.000000 + 133 + + + + + 64.000000 + + + + 129.000000 + 133 + + + + + 64.000000 + + + + 129.000000 + 133 + + + + + 63.000000 + + + + 129.000000 + 133 + + + + + 63.000000 + + + + 129.000000 + 133 + + + + + 63.000000 + + + + 129.000000 + + + + + 63.000000 + + + + 129.000000 + 133 + + + + + 62.000000 + + + + 129.000000 + 134 + + + + + 63.000000 + + + + 129.000000 + 134 + + + + + 63.000000 + + + + 129.000000 + 134 + + + + + 63.000000 + + + + 129.000000 + 134 + + + + + 63.000000 + + + + 129.000000 + 134 + + + + + 63.000000 + + + + 129.000000 + 133 + + + + + 64.000000 + + + + 129.000000 + 133 + + + + + 65.000000 + + + + 129.000000 + 133 + + + + + 66.000000 + + + + 129.000000 + 133 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 69.000000 + + + + 129.000000 + 131 + + + + + 70.000000 + + + + 129.000000 + 131 + + + + + 71.000000 + + + + 129.000000 + 131 + + + + + 72.000000 + + + + 129.000000 + 131 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 74.000000 + + + + 129.000000 + 130 + + + + + 74.000000 + + + + 129.000000 + 130 + + + + + 74.000000 + + + + 129.000000 + 129 + + + + + 74.000000 + + + + 129.000000 + 129 + + + + + 74.000000 + + + + 129.000000 + 129 + + + + + 74.000000 + + + + 129.000000 + 129 + + + + + 74.000000 + + + + 129.000000 + 128 + + + + + 74.000000 + + + + 129.000000 + 128 + + + + + 74.000000 + + + + 129.000000 + 128 + + + + + 73.000000 + + + + 129.000000 + 136 + + + + + 72.000000 + + + + 129.000000 + 136 + + + + + 72.000000 + + + + 129.000000 + 138 + + + + + 71.000000 + + + + 129.000000 + 138 + + + + + 70.000000 + + + + 129.000000 + 128 + + + + + 69.000000 + + + + 129.000000 + 128 + + + + + 68.000000 + + + + 129.000000 + 136 + + + + + 68.000000 + + + + 129.000000 + 136 + + + + + 67.000000 + + + + 129.000000 + 134 + + + + + 66.000000 + + + + 129.000000 + 134 + + + + + 66.000000 + + + + 129.000000 + 134 + + + + + 65.000000 + + + + 129.000000 + 127 + + + + + 65.000000 + + + + 129.000000 + 127 + + + + + 65.000000 + + + + 129.000000 + 128 + + + + + 65.000000 + + + + 129.000000 + 128 + + + + + 65.000000 + + + + 129.000000 + 128 + + + + + 65.000000 + + + + 129.000000 + 127 + + + + + 64.000000 + + + + 129.000000 + 127 + + + + + 63.000000 + + + + 129.000000 + 130 + + + + + 62.000000 + + + + 129.000000 + 130 + + + + + 61.000000 + + + + 129.000000 + 128 + + + + + 60.000000 + + + + 129.000000 + 128 + + + + + 60.000000 + + + + 129.000000 + 110 + + + + + 61.000000 + + + + 129.000000 + 112 + + + + + 61.000000 + + + + 129.000000 + 112 + + + + + 62.000000 + + + + 129.000000 + 112 + + + + + 63.000000 + + + + 129.000000 + 122 + + + + + 64.000000 + + + + 129.000000 + 122 + + + + + 65.000000 + + + + 129.000000 + 126 + + + + + 66.000000 + + + + 129.000000 + 126 + + + + + 66.000000 + + + + 129.000000 + 127 + + + + + 65.000000 + + + + 129.000000 + 127 + + + + + 65.000000 + + + + 129.000000 + 128 + + + + + 64.000000 + + + + 129.000000 + 128 + + + + + 63.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 130 + + + + + 62.000000 + + + + 129.000000 + 130 + + + + + 62.000000 + + + + 129.000000 + 126 + + + + + 63.000000 + + + + 129.000000 + 126 + + + + + 63.000000 + + + + 129.000000 + 127 + + + + + 64.000000 + + + + 129.000000 + 127 + + + + + 66.000000 + + + + 129.000000 + 127 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 69.000000 + + + + 129.000000 + 132 + + + + + 69.000000 + + + + 129.000000 + 132 + + + + + 70.000000 + + + + 129.000000 + 129 + + + + + 70.000000 + + + + 129.000000 + 129 + + + + + 70.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 121 + + + + + 68.000000 + + + + 129.000000 + 121 + + + + + 67.000000 + + + + 129.000000 + 121 + + + + + 66.000000 + + + + 129.000000 + 121 + + + + + 67.000000 + + + + 129.000000 + 121 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 130 + + + + + 71.000000 + + + + 129.000000 + 130 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 71.000000 + + + + 129.000000 + 131 + + + + + 71.000000 + + + + 129.000000 + 131 + + + + + 70.000000 + + + + 129.000000 + 137 + + + + + 70.000000 + + + + 129.000000 + 137 + + + + + 69.000000 + + + + 129.000000 + 137 + + + + + 69.000000 + + + + 129.000000 + 138 + + + + + 68.000000 + + + + 129.000000 + 138 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 67.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 131 + + + + + 68.000000 + + + + 129.000000 + 131 + + + + + 68.000000 + + + + 129.000000 + 131 + + + + + 67.000000 + + + + 129.000000 + 134 + + + + + 66.000000 + + + + 129.000000 + 131 + + + + + 65.000000 + + + + 129.000000 + 131 + + + + + 64.000000 + + + + 129.000000 + 131 + + + + + 64.000000 + + + + 129.000000 + 131 + + + + + 63.000000 + + + + 129.000000 + 131 + + + + + 63.000000 + + + + 129.000000 + 131 + + + + + 63.000000 + + + + 129.000000 + 131 + + + + + 63.000000 + + + + 129.000000 + + + + + 63.000000 + + + + 129.000000 + 128 + + + + + 63.000000 + + + + 129.000000 + 128 + + + + + 62.000000 + + + + 129.000000 + 128 + + + + + 62.000000 + + + + 129.000000 + 126 + + + + + 61.000000 + + + + 129.000000 + 126 + + + + + 59.000000 + + + + 129.000000 + 126 + + + + + 58.000000 + + + + 129.000000 + 134 + + + + + 56.000000 + + + + 129.000000 + 134 + + + + + 55.000000 + + + + 129.000000 + 133 + + + + + 53.000000 + + + + 129.000000 + 133 + + + + + 52.000000 + + + + 129.000000 + 133 + + + + + 51.000000 + + + + 129.000000 + 127 + + + + + 50.000000 + + + + 129.000000 + 127 + + + + + 50.000000 + + + + 129.000000 + 134 + + + + + 50.000000 + + + + 129.000000 + 134 + + + + + 50.000000 + + + + 129.000000 + 140 + + + + + 50.000000 + + + + 129.000000 + 140 + + + + + 51.000000 + + + + 129.000000 + 140 + + + + + 52.000000 + + + + 129.000000 + 138 + + + + + 53.000000 + + + + 129.000000 + 138 + + + + + 54.000000 + + + + 129.000000 + 138 + + + + + 56.000000 + + + + 129.000000 + 135 + + + + + 56.000000 + + + + 129.000000 + 135 + + + + + 57.000000 + + + + 129.000000 + 134 + + + + + 57.000000 + + + + 129.000000 + 134 + + + + + 57.000000 + + + + 129.000000 + 134 + + + + + 57.000000 + + + + 129.000000 + 139 + + + + + 57.000000 + + + + 129.000000 + 139 + + + + + 58.000000 + + + + 129.000000 + 136 + + + + + 58.000000 + + + + 129.000000 + 136 + + + + + 59.000000 + + + + 129.000000 + 136 + + + + + 60.000000 + + + + 129.000000 + 133 + + + + + 61.000000 + + + + 129.000000 + 133 + + + + + 62.000000 + + + + 129.000000 + 129 + + + + + 64.000000 + + + + 129.000000 + 129 + + + + + 65.000000 + + + + 129.000000 + 129 + + + + + 65.000000 + + + + 129.000000 + 131 + + + + + 66.000000 + + + + 129.000000 + 131 + + + + + 66.000000 + + + + 129.000000 + 130 + + + + + 65.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 134 + + + + + 63.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 133 + + + + + 58.000000 + + + + 129.000000 + 133 + + + + + 57.000000 + + + + 129.000000 + 134 + + + + + 56.000000 + + + + 129.000000 + + + + + 57.000000 + + + + 129.000000 + 130 + + + + + 57.000000 + + + + 129.000000 + 130 + + + + + 58.000000 + + + + 129.000000 + 127 + + + + + 58.000000 + + + + 129.000000 + 127 + + + + + 59.000000 + + + + 129.000000 + 127 + + + + + 59.000000 + + + + 129.000000 + 132 + + + + + 59.000000 + + + + 129.000000 + 132 + + + + + 58.000000 + + + + 129.000000 + 132 + + + + + 56.000000 + + + + 129.000000 + 132 + + + + + 55.000000 + + + + 129.000000 + 132 + + + + + 54.000000 + + + + 129.000000 + 135 + + + + + 52.000000 + + + + 129.000000 + 135 + + + + + 51.000000 + + + + 129.000000 + 138 + + + + + 51.000000 + + + + 129.000000 + 138 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 53.000000 + + + + 129.000000 + 132 + + + + + 54.000000 + + + + 129.000000 + 132 + + + + + 55.000000 + + + + 129.000000 + 132 + + + + + 56.000000 + + + + 129.000000 + 132 + + + + + 56.000000 + + + + 129.000000 + 132 + + + + + 57.000000 + + + + 129.000000 + 133 + + + + + 57.000000 + + + + 129.000000 + 133 + + + + + 56.000000 + + + + 129.000000 + 133 + + + + + 55.000000 + + + + 129.000000 + 134 + + + + + 54.000000 + + + + 129.000000 + 134 + + + + + 52.000000 + + + + 129.000000 + 134 + + + + + 52.000000 + + + + 129.000000 + 134 + + + + + 51.000000 + + + + 129.000000 + 134 + + + + + 50.000000 + + + + 129.000000 + 135 + + + + + 49.000000 + + + + 129.000000 + 135 + + + + + 48.000000 + + + + 129.000000 + 135 + + + + + 48.000000 + + + + 129.000000 + 135 + + + + + 48.000000 + + + + 129.000000 + 135 + + + + + 49.000000 + + + + 129.000000 + 135 + + + + + 50.000000 + + + + 129.000000 + 135 + + + + + 51.000000 + + + + 129.000000 + 135 + + + + + 53.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + 135 + + + + + 55.000000 + + + + 129.000000 + 135 + + + + + 56.000000 + + + + 129.000000 + 134 + + + + + 56.000000 + + + + 129.000000 + 134 + + + + + 56.000000 + + + + 129.000000 + 134 + + + + + 56.000000 + + + + 129.000000 + 134 + + + + + 55.000000 + + + + 129.000000 + 138 + + + + + 54.000000 + + + + 129.000000 + 138 + + + + + 54.000000 + + + + 129.000000 + 138 + + + + + 54.000000 + + + + 129.000000 + 140 + + + + + 53.000000 + + + + 129.000000 + 140 + + + + + 53.000000 + + + + 129.000000 + 139 + + + + + 52.000000 + + + + 129.000000 + 139 + + + + + 51.000000 + + + + 129.000000 + 140 + + + + + 50.000000 + + + + 129.000000 + 140 + + + + + 49.000000 + + + + 129.000000 + 140 + + + + + 47.000000 + + + + 129.000000 + 135 + + + + + 47.000000 + + + + 129.000000 + 135 + + + + + 46.000000 + + + + 129.000000 + 135 + + + + + 47.000000 + + + + 129.000000 + 135 + + + + + 48.000000 + + + + 129.000000 + 131 + + + + + 49.000000 + + + + 129.000000 + 131 + + + + + 51.000000 + + + + 129.000000 + 131 + + + + + 54.000000 + + + + 129.000000 + 131 + + + + + 57.000000 + + + + 129.000000 + 132 + + + + + 60.000000 + + + + 129.000000 + 132 + + + + + 63.000000 + + + + 129.000000 + 132 + + + + + 66.000000 + + + + 129.000000 + 132 + + + + + 68.000000 + + + + 129.000000 + 133 + + + + + 70.000000 + + + + 129.000000 + 133 + + + + + 71.000000 + + + + 129.000000 + 133 + + + + + 72.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 72.000000 + + + + 129.000000 + 134 + + + + + 72.000000 + + + + 129.000000 + 134 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 71.000000 + + + + 129.000000 + 138 + + + + + 71.000000 + + + + 129.000000 + 138 + + + + + 71.000000 + + + + 129.000000 + 138 + + + + + 71.000000 + + + + 129.000000 + 138 + + + + + 71.000000 + + + + 129.000000 + 138 + + + + + 71.000000 + + + + 129.000000 + 133 + + + + + 71.000000 + + + + 129.000000 + 133 + + + + + 72.000000 + + + + 129.000000 + 131 + + + + + 72.000000 + + + + 129.000000 + 131 + + + + + 73.000000 + + + + 129.000000 + 131 + + + + + 75.000000 + + + + 129.000000 + 129 + + + + + 76.000000 + + + + 129.000000 + 129 + + + + + 77.000000 + + + + 129.000000 + 131 + + + + + 79.000000 + + + + 129.000000 + 131 + + + + + 80.000000 + + + + 129.000000 + 137 + + + + + 80.000000 + + + + 129.000000 + 137 + + + + + 81.000000 + + + + 129.000000 + 137 + + + + + 81.000000 + + + + 129.000000 + 138 + + + + + 80.000000 + + + + 129.000000 + 138 + + + + + 80.000000 + + + + 129.000000 + 135 + + + + + 80.000000 + + + + 129.000000 + 135 + + + + + 80.000000 + + + + 129.000000 + 136 + + + + + 81.000000 + + + + 129.000000 + 136 + + + + + 81.000000 + + + + 129.000000 + 135 + + + + + 82.000000 + + + + 129.000000 + 135 + + + + + 83.000000 + + + + 129.000000 + 134 + + + + + 84.000000 + + + + 129.000000 + 134 + + + + + 84.000000 + + + + 129.000000 + 137 + + + + + 84.000000 + + + + 129.000000 + 137 + + + + + 84.000000 + + + + 129.000000 + 137 + + + + + 83.000000 + + + + 129.000000 + 137 + + + + + 83.000000 + + + + 129.000000 + 137 + + + + + 81.000000 + + + + 129.000000 + 137 + + + + + 80.000000 + + + + 129.000000 + 137 + + + + + 79.000000 + + + + 129.000000 + 137 + + + + + 77.000000 + + + + 129.000000 + 137 + + + + + 76.000000 + + + + 129.000000 + 136 + + + + + 75.000000 + + + + 129.000000 + 136 + + + + + 74.000000 + + + + 129.000000 + 133 + + + + + 74.000000 + + + + 129.000000 + 133 + + + + + 74.000000 + + + + 129.000000 + 133 + + + + + 74.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 74.000000 + + + + 129.000000 + 134 + + + + + 74.000000 + + + + 129.000000 + 134 + + + + + 74.000000 + + + + 129.000000 + 134 + + + + + 74.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 140 + + + + + 72.000000 + + + + 129.000000 + 140 + + + + + 71.000000 + + + + 129.000000 + 145 + + + + + 69.000000 + + + + 129.000000 + 145 + + + + + 67.000000 + + + + 129.000000 + 139 + + + + + 65.000000 + + + + 129.000000 + 139 + + + + + 63.000000 + + + + 129.000000 + 138 + + + + + 61.000000 + + + + 129.000000 + 138 + + + + + 60.000000 + + + + 129.000000 + 136 + + + + + 58.000000 + + + + 129.000000 + 136 + + + + + 57.000000 + + + + 129.000000 + 135 + + + + + 56.000000 + + + + 129.000000 + 135 + + + + + 56.000000 + + + + 129.000000 + 135 + + + + + 56.000000 + + + + 129.000000 + 138 + + + + + 56.000000 + + + + 129.000000 + 138 + + + + + 56.000000 + + + + 129.000000 + 138 + + + + + 55.000000 + + + + 129.000000 + 138 + + + + + 55.000000 + + + + 129.000000 + 138 + + + + + 55.000000 + + + + 129.000000 + 133 + + + + + 55.000000 + + + + 129.000000 + 133 + + + + + 54.000000 + + + + 129.000000 + 133 + + + + + 54.000000 + + + + 129.000000 + 141 + + + + + 54.000000 + + + + 129.000000 + 141 + + + + + 54.000000 + + + + 129.000000 + + + + + 54.000000 + + + + 129.000000 + 141 + + + + + 53.000000 + + + + 129.000000 + 142 + + + + + 53.000000 + + + + 129.000000 + 142 + + + + + 53.000000 + + + + 129.000000 + 142 + + + + + 53.000000 + + + + 129.000000 + 134 + + + + + 53.000000 + + + + 129.000000 + 134 + + + + + 53.000000 + + + + 129.000000 + 135 + + + + + 53.000000 + + + + 129.000000 + 135 + + + + + 53.000000 + + + + 129.000000 + 135 + + + + + 53.000000 + + + + 129.000000 + 141 + + + + + 54.000000 + + + + 129.000000 + 137 + + + + + 54.000000 + + + + 129.000000 + 137 + + + + + 55.000000 + + + + 129.000000 + 131 + + + + + 56.000000 + + + + 129.000000 + 131 + + + + + 58.000000 + + + + 129.000000 + 131 + + + + + 60.000000 + + + + 129.000000 + 129 + + + + + 61.000000 + + + + 129.000000 + 129 + + + + + 62.000000 + + + + 129.000000 + 132 + + + + + 62.000000 + + + + 129.000000 + 132 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 129 + + + + + 62.000000 + + + + 129.000000 + 129 + + + + + 63.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 66.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 69.000000 + + + + 129.000000 + 130 + + + + + 71.000000 + + + + 129.000000 + 130 + + + + + 72.000000 + + + + 129.000000 + 136 + + + + + 73.000000 + + + + 129.000000 + 136 + + + + + 73.000000 + + + + 129.000000 + 136 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 73.000000 + + + + 129.000000 + 133 + + + + + 71.000000 + + + + 129.000000 + 131 + + + + + 70.000000 + + + + 129.000000 + 131 + + + + + 69.000000 + + + + 129.000000 + 132 + + + + + 69.000000 + + + + 129.000000 + 132 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 68.000000 + + + + 129.000000 + 135 + + + + + 67.000000 + + + + 129.000000 + 135 + + + + + 67.000000 + + + + 129.000000 + 133 + + + + + 67.000000 + + + + 129.000000 + 133 + + + + + 68.000000 + + + + 129.000000 + 133 + + + + + 68.000000 + + + + 129.000000 + 139 + + + + + 67.000000 + + + + 129.000000 + 139 + + + + + 66.000000 + + + + 129.000000 + 139 + + + + + 65.000000 + + + + 129.000000 + 139 + + + + + 64.000000 + + + + 129.000000 + 132 + + + + + 63.000000 + + + + 129.000000 + 132 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 62.000000 + + + + 129.000000 + 131 + + + + + 63.000000 + + + + 129.000000 + 130 + + + + + 64.000000 + + + + 129.000000 + 130 + + + + + 65.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 68.000000 + + + + 129.000000 + 136 + + + + + 70.000000 + + + + 129.000000 + 136 + + + + + 71.000000 + + + + 129.000000 + 134 + + + + + 72.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 74.000000 + + + + 129.000000 + 131 + + + + + 74.000000 + + + + 129.000000 + 131 + + + + + 74.000000 + + + + 129.000000 + 138 + + + + + 74.000000 + + + + 129.000000 + 138 + + + + + 73.000000 + + + + 129.000000 + 138 + + + + + 72.000000 + + + + 129.000000 + 132 + + + + + 71.000000 + + + + 129.000000 + 132 + + + + + 70.000000 + + + + 129.000000 + 132 + + + + + 69.000000 + + + + 129.000000 + 132 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 66.000000 + + + + 129.000000 + 133 + + + + + 66.000000 + + + + 129.000000 + 133 + + + + + 66.000000 + + + + 129.000000 + 135 + + + + + 66.000000 + + + + 129.000000 + 135 + + + + + 65.000000 + + + + 129.000000 + 135 + + + + + 64.000000 + + + + 129.000000 + 139 + + + + + 64.000000 + + + + 129.000000 + 139 + + + + + 64.000000 + + + + 129.000000 + 140 + + + + + 64.000000 + + + + 129.000000 + 140 + + + + + 64.000000 + + + + 129.000000 + 142 + + + + + 63.000000 + + + + 129.000000 + 142 + + + + + 64.000000 + + + + 129.000000 + 136 + + + + + 64.000000 + + + + 129.000000 + 136 + + + + + 65.000000 + + + + 129.000000 + 130 + + + + + 66.000000 + + + + 129.000000 + 130 + + + + + 66.000000 + + + + 129.000000 + + + + + 66.000000 + + + + 129.000000 + 124 + + + + + 67.000000 + + + + 129.000000 + 135 + + + + + 67.000000 + + + + 129.000000 + 135 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 68.000000 + + + + 129.000000 + 130 + + + + + 67.000000 + + + + 129.000000 + 134 + + + + + 67.000000 + + + + 129.000000 + 134 + + + + + 67.000000 + + + + 129.000000 + 135 + + + + + 67.000000 + + + + 129.000000 + 135 + + + + + 67.000000 + + + + 129.000000 + 144 + + + + + 66.000000 + + + + 129.000000 + 144 + + + + + 66.000000 + + + + 129.000000 + 138 + + + + + 66.000000 + + + + 129.000000 + 138 + + + + + 66.000000 + + + + 129.000000 + 138 + + + + + 66.000000 + + + + 129.000000 + 138 + + + + + 67.000000 + + + + 129.000000 + 138 + + + + + 67.000000 + + + + 129.000000 + 138 + + + + + 67.000000 + + + + 129.000000 + 137 + + + + + 67.000000 + + + + 129.000000 + 137 + + + + + 68.000000 + + + + 129.000000 + 132 + + + + + 69.000000 + + + + 129.000000 + 132 + + + + + 70.000000 + + + + 129.000000 + 135 + + + + + 70.000000 + + + + 129.000000 + 135 + + + + + 71.000000 + + + + 129.000000 + 135 + + + + + 72.000000 + + + + 129.000000 + 132 + + + + + 74.000000 + + + + 129.000000 + 136 + + + + + 75.000000 + + + + 129.000000 + 136 + + + + + 77.000000 + + + + 129.000000 + 132 + + + + + 79.000000 + + + + 129.000000 + 132 + + + + + 82.000000 + + + + 129.000000 + 139 + + + + + 84.000000 + + + + 129.000000 + 139 + + + + + 86.000000 + + + + 129.000000 + 139 + + + + + 88.000000 + + + + 129.000000 + 135 + + + + + 89.000000 + + + + 129.000000 + 135 + + + + + 90.000000 + + + + 129.000000 + 135 + + + + + 91.000000 + + + + 129.000000 + 131 + + + + + 90.000000 + + + + 129.000000 + 133 + + + + + 89.000000 + + + + 129.000000 + 133 + + + + + 87.000000 + + + + 129.000000 + 133 + + + + + 85.000000 + + + + 129.000000 + 132 + + + + + 82.000000 + + + + 129.000000 + 132 + + + + + 79.000000 + + + + 129.000000 + 134 + + + + + 76.000000 + + + + 129.000000 + 134 + + + + + 73.000000 + + + + 129.000000 + 134 + + + + + 70.000000 + + + + 129.000000 + 130 + + + + + 67.000000 + + + + 129.000000 + 132 + + + + + 64.000000 + + + + 129.000000 + 132 + + + + + 62.000000 + + + + 129.000000 + 134 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 59.000000 + + + + 129.000000 + 135 + + + + + 59.000000 + + + + 129.000000 + 135 + + + + + 58.000000 + + + + 129.000000 + 136 + + + + + 59.000000 + + + + 129.000000 + 136 + + + + + 60.000000 + + + + 129.000000 + 136 + + + + + 61.000000 + + + + 129.000000 + 142 + + + + + 63.000000 + + + + 129.000000 + 142 + + + + + 63.000000 + + + + 129.000000 + 141 + + + + + 64.000000 + + + + 129.000000 + 141 + + + + + 64.000000 + + + + 129.000000 + 137 + + + + + 65.000000 + + + + 129.000000 + 137 + + + + + 64.000000 + + + + 129.000000 + 136 + + + + + 65.000000 + + + + 129.000000 + 136 + + + + + 66.000000 + + + + 129.000000 + 136 + + + + + 67.000000 + + + + 129.000000 + 136 + + + + + 68.000000 + + + + 129.000000 + 136 + + + + + 69.000000 + + + + 129.000000 + 136 + + + + + 71.000000 + + + + 129.000000 + 137 + + + + + 72.000000 + + + + 129.000000 + 137 + + + + + 72.000000 + + + + 129.000000 + 137 + + + + + 72.000000 + + + + 129.000000 + 136 + + + + + 72.000000 + + + + 129.000000 + 136 + + + + + 72.000000 + + + + 129.000000 + 136 + + + + + 71.000000 + + + + 129.000000 + 136 + + + + + 71.000000 + + + + 129.000000 + 136 + + + + + 70.000000 + + + + 129.000000 + 135 + + + + + 69.000000 + + + + 129.000000 + 135 + + + + + 67.000000 + + + + 129.000000 + 133 + + + + + 66.000000 + + + + 129.000000 + 133 + + + + + 65.000000 + + + + 129.000000 + 132 + + + + + 63.000000 + + + + 129.000000 + 132 + + + + + 62.000000 + + + + 129.000000 + 132 + + + + + 61.000000 + + + + 129.000000 + 132 + + + + + 61.000000 + + + + 129.000000 + 133 + + + + + 60.000000 + + + + 129.000000 + 133 + + + + + 60.000000 + + + + 129.000000 + 133 + + + + + 60.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 134 + + + + + 61.000000 + + + + 129.000000 + 136 + + + + + 60.000000 + + + + 129.000000 + 136 + + + + + 60.000000 + + + + 129.000000 + 137 + + + + + 60.000000 + + + + 129.000000 + 137 + + + + + 60.000000 + + + + 129.000000 + 137 + + + + + 60.000000 + + + + 129.000000 + 139 + + + + + 60.000000 + + + + 129.000000 + 138 + + + + + 60.000000 + + + + 129.000000 + 138 + + + + + 60.000000 + + + + 129.000000 + 138 + + + + + 61.000000 + + + + 129.000000 + 139 + + + + + 61.000000 + + + + 129.000000 + 139 + + + + + 61.000000 + + + + 129.000000 + 136 + + + + + 60.000000 + + + + 129.000000 + 136 + + + + + 60.000000 + + + + 129.000000 + 135 + + + + + 59.000000 + + + + 129.000000 + 135 + + + + + 58.000000 + + + + 129.000000 + 134 + + + + + 57.000000 + + + + 129.000000 + 134 + + + + + 56.000000 + + + + 129.000000 + 134 + + + + + 56.000000 + + + + 129.000000 + 137 + + + + + 55.000000 + + + + 129.000000 + 137 + + + + + 54.000000 + + + + 129.000000 + 134 + + + + + 54.000000 + + + + 129.000000 + 134 + + + + + 54.000000 + + + + 129.000000 + 133 + + + + + 53.000000 + + + + 129.000000 + 133 + + + + + 53.000000 + + + + 129.000000 + 133 + + + + + 53.000000 + + + + 129.000000 + 133 + + + + + 52.000000 + + + + 129.000000 + 133 + + + + + 52.000000 + + + + 129.000000 + 135 + + + + + 51.000000 + + + + 129.000000 + 135 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 132 + + + + + 51.000000 + + + + 129.000000 + 131 + + + + + 51.000000 + + + + 129.000000 + 131 + + + + + 50.000000 + + + + 129.000000 + 131 + + + + + 49.000000 + + + + 129.000000 + 134 + + + + + 48.000000 + + + + 129.000000 + 136 + + + + + 47.000000 + + + + 129.000000 + 136 + + + + + 46.000000 + + + + 129.000000 + 136 + + + + + 45.000000 + + + + 129.000000 + 135 + + + + + 43.000000 + + + + 129.000000 + 135 + + + + + 42.000000 + + + + 129.000000 + 140 + + + + + 42.000000 + + + + 129.000000 + 140 + + + + + 41.000000 + + + + 129.000000 + 140 + + + + + 40.000000 + + + + 129.000000 + 139 + + + + + 39.000000 + + + + 129.000000 + 139 + + + + + 39.000000 + + + + 129.000000 + 135 + + + + + 39.000000 + + + + 129.000000 + 135 + + + + + 39.000000 + + + + 129.000000 + 135 + + + + + 39.000000 + + + + 129.000000 + 135 + + + + + 39.000000 + + + + 129.000000 + 130 + + + + + 40.000000 + + + + 129.000000 + 130 + + + + + 41.000000 + + + + 129.000000 + 130 + + + + + 41.000000 + + + + 129.000000 + 130 + + + + + 42.000000 + + + + 129.000000 + 130 + + + + + 42.000000 + + + + 129.000000 + 130 + + + + + 43.000000 + + + + 129.000000 + 130 + + + + + 44.000000 + + + + 129.000000 + 135 + + + + + 44.000000 + + + + 129.000000 + 135 + + + + + 45.000000 + + + + 129.000000 + 135 + + + + + 45.000000 + + + + 129.000000 + 140 + + + + + 46.000000 + + + + 129.000000 + 137 + + + + + 47.000000 + + + + 129.000000 + 137 + + + + + 47.000000 + + + + 129.000000 + 132 + + + + + 48.000000 + + + + 129.000000 + 132 + + + + + 48.000000 + + + + 129.000000 + 130 + + + + + 49.000000 + + + + 129.000000 + 130 + + + + + 50.000000 + + + + 129.000000 + 131 + + + + + 50.000000 + + + + 129.000000 + 131 + + + + + + diff --git a/gpsbabel/test-all b/gpsbabel/test-all index 298c5de3f..cc0755e72 100755 --- a/gpsbabel/test-all +++ b/gpsbabel/test-all @@ -1,4 +1,5 @@ #!/bin/bash +set -e ### cross format read/(write) test ### diff --git a/gpsbabel/testo.d/energympro.test b/gpsbabel/testo.d/energympro.test new file mode 100644 index 000000000..a46b9788f --- /dev/null +++ b/gpsbabel/testo.d/energympro.test @@ -0,0 +1,6 @@ +# +# Basic energympro tests (readonly) +# +rm -f ${TMPDIR}/energympro* +gpsbabel -i energympro -f ${REFERENCE}/track/energympro.cpo -o gpx,garminextensions -F ${TMPDIR}/energympro.gpx +compare ${REFERENCE}/track/energympro.gpx ${TMPDIR}/energympro.gpx diff --git a/gpsbabel/vecs.cc b/gpsbabel/vecs.cc index 6a485b2f5..764c2797b 100644 --- a/gpsbabel/vecs.cc +++ b/gpsbabel/vecs.cc @@ -47,6 +47,7 @@ extern ff_vecs_t delbin_vecs; extern ff_vecs_t dg100_vecs; extern ff_vecs_t dg200_vecs; extern ff_vecs_t easygps_vecs; +extern ff_vecs_t energympro_vecs; extern ff_vecs_t garmin_vecs; extern ff_vecs_t garmin_txt_vecs; extern ff_vecs_t gcdb_vecs; @@ -1068,6 +1069,13 @@ vecs_t vec_list[] = { "xml", NULL, }, + { + &energympro_vecs, + "energympro", + "Energympro GPS training watch", + "cpo", + NULL, + }, #endif // MAXIMAL_ENABLED { NULL, diff --git a/gpsbabel/xmldoc/filters/options/transform-rptdigits.xml b/gpsbabel/xmldoc/filters/options/transform-rptdigits.xml deleted file mode 100644 index c035606b5..000000000 --- a/gpsbabel/xmldoc/filters/options/transform-rptdigits.xml +++ /dev/null @@ -1,13 +0,0 @@ - -This option lets you configure how many digits GPSBabel uses for numbering generated route point names. - - -When GPSBabel creates route points during the transformation process these points are sequentially numbered and named "RPTxxx" where xxx represent the number. By default GPSBabel uses 3 digits for these numbers. Rationale: This way a large number of route points can be uniquely named while the generated names are limited to 6 characters. This limitation is imposed by specific GPS-devices. - - -Using this option GPSBabel can be configured to use less or more digits for the generated names. This option is best used in conjunction with the rptname option. - - -Convert a GPX track to a GPX route, deleting the original track, using 2 digits for the generated numbers. -gpsbabel -i gpx -f track.gpx -x transform,wpt=trk,del,rptdigits=2 -o gpx -F route.gpx - diff --git a/gpsbabel/xmldoc/formats/energympro.xml b/gpsbabel/xmldoc/formats/energympro.xml new file mode 100644 index 000000000..ca4d57fef --- /dev/null +++ b/gpsbabel/xmldoc/formats/energympro.xml @@ -0,0 +1,16 @@ + + Input support for the Energympro training watches + file structure. + + +The +Energympro GPS sport watches present themselves as USB mass storage + devices. To get the training just connect the device using the supplied +USB cable to your computer and the device will show up as a removable device. +Your training data is in the Workout folder. + + + + gpsbabel -i energympro -f infile.cpo -o gpx,garminextensions -F outfile.gpx + + -- 2.30.2